<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // console.log(num);
        // var num = 123;

        // var 存在问题 
        // 1、声明提升 先上车后买票
        // 2、变量覆盖 套牌
        // 3、没有块级作用域

        // function fun(){
        //     for(let  i=0;i<3;i++){
        //         console.log(i);
        //     }
        //     console.log(i)
        // }
        // fun()

        // const 
        // 1、声明之后需要赋值
        // 2、定义的值不能修改，否则报错
        // 3、支持let的其他属性 如代码块

        // ES6 
        // 
        let a =1;
        let b = 2;
        [a,b] =[b,a];
        console.log(a,b);

        let arr = [1,1,2,3,7,4,5,7];
        console.log([...new Set(arr)])
        // indexof会找到第一个数值的下标 如果重复出现不会相等
        const newarr = arr.filter((item,index,array) => array.indexOf(item) === index)
        console.log(arr.filter((item,index,array) => array.indexOf(item) === index))

        // 构造函数同步执行
        const promise = new Promise((resolve,reject)=>{
            console.log(1);
            resolve();
            console.log(2);
        })
        // then是微任务
        promise.then(()=>{
            console.log(3)
        })
        console.log(4)

        // 1 2 4 3 
    </script>
</body>
</html>